Event Loop
eventをキューに積み、そこから1つずつ取り出してsingle threadで処理する
一つのeventが終われば、次のeventを処理する
参考
/mrsekut-book-4873119235/030
#WIP
https://meetup-jp.toast.com/896
長所
対になるのはマルチスレッド
スレッドの生成や切り替えにリソースを消費する
そのため、eventが増えた時に性能が悪くなる
EventLoopはsingle threadなので、eventが増えてもメモリを食わない
EventLoopなやつ
Node.js
Nginx
Twisted
Python
EventMachine
Ruby
Tokioも?
Rust
AnyEvent
Perl
Eventの例
HTTP Request
コールバック関数
デメリット
どこか一つのイベントの処理が重ければ全体が重くなる
これへの対策の一つがノンブロッキングI/O
Node.jsではノンブロッキングI/Oがあるので、処理が止まらない #??
微妙にわからん
Node.jsでは接続ごとにスレッドを立てない
プロセス内で実行されるイベントを起動する
イベントとは
どんなに接続数が増えてもスレッドがメモリを食い潰すことはない
ほんまに?なんで?
ただのwhile loop
スレッドモデルと、イベントループモデルを
↑一つのスレッドと、↑1つのプロセスで
区別してるの、若干違和感なんだが、そういうもんなん?
https://docs.google.com/presentation/d/1x2clfAPR9F83cBcmztFRXMnUw3pFX8QGdmXTMcIph4Y/edit#slide=id.g7a63b3a68c_1_222
p.21
https://nodejs.org/de/docs/guides/event-loop-timers-and-nexttick/
https://dev.to/kapantzak/js-illustrated-the-event-loop-4mco
https://qiita.com/twipg/items/8f2a00354f6159cd1a5a
https://blog.hiroppy.me/entry/nodejs-event-loop
https://postd.cc/understanding-the-nodejs-event-loop/
http://jxck.hatenablog.com/entry/for-with-eventloop
https://www.yunabe.jp/docs/why_events_are_a_bad_idea.html
https://coliss.com/articles/build-websites/operation/javascript/javascript-visualized-event-loop.html
『ハイパフォーマンスブラウザネットワーキング』